Technical Field
The present invention relates to the copy and transfer of data by remote direct memory access (RDMA), particularly to the copy and transfer of data that has non-contiguous data regions that include garbage data.
Description of the Related Art
In the X10 programming language (hereinafter “X10”), an X10 “place” is a repository for data and activities, corresponding loosely to a process or a processor. A place may be local and a place may be remote. The activities running in a place may access data items located at a local place with the efficiency of on-chip access. On the other hand, accessing data stored in other places may take orders of magnitude longer.
In X10, objects cannot be referred to directly if they are found at other places, e.g., remote places. Instead, when a remote place needs to use an object, the object is copied from where it is stored, e.g., a local place, for use in the remote place.
In computing, remote direct memory access (RDMA) is a direct memory access from the memory of one computer into that of another computer without involving the operating system of either computer. Memory access via RDMA attains high throughput and networking with low latency. These features are especially useful in very large parallel computer clusters. With RDMA, the cost of data transfer can be reduced.
Vectored input/output (I/O), also known as scatter/gather I/O, is a method of input and output by which a single procedure-call sequentially writes data from multiple buffers to a single data stream or reads data from a data stream to multiple buffers. The buffers are given in a vector of buffers. Scatter/gather I/O refers to the process of gathering data from, or scattering data into, the given set of buffers. Scatter/gather I/O can operate synchronously or asynchronously. Using scatter/gather I/O with RDMA could be efficient and convenient; however, when scatter/gather I/O is frequently used, the computer system may experience significant degradation due to the creation of additional data copies during scatter/gather operations.